// package com.example.apigateway.filters;
//
// import lombok.extern.slf4j.Slf4j;
// import org.apache.commons.lang3.StringUtils;
// import org.springframework.cloud.gateway.filter.GatewayFilter;
// import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
// import org.springframework.core.Ordered;
// import org.springframework.http.server.reactive.ServerHttpRequest;
// import org.springframework.stereotype.Component;
// import org.springframework.web.server.ServerWebExchange;
//
// @Slf4j
// @Component
// public class AdminAuthFilter extends AbstractGatewayFilterFactory implements Ordered {
//
//     // @Autowired
//     // private GatewaySetting gatewaySetting;
//
//     // @Autowired
//     // private RedisUtil redisUtil;
//
//     @Override
//     public GatewayFilter apply(Object config) {
//         return (exchange, chain) -> {
//             ServerHttpRequest request = exchange.getRequest();
//             String requestURI = "/api/admin"+request.getURI().getPath();
//             // if(gatewaySetting.getWhiteUrls().contains(requestURI)){
//             //     return chain.filter(exchange);
//             // }
//             boolean isCookieToken = false;
//             String token = request.getHeaders().getFirst("token");
//             if(StringUtils.isEmpty(token)){
//             //     MultiValueMap<String, HttpCookie> cookieValueMap = request.getCookies();
//             //     log.debug("cookieValueMap===============>"+ JSON.toJSONString(cookieValueMap));
//             //     if(cookieValueMap.containsKey(GlobalConstant.ADMIN_LOGIN_TOKEN_COOKIE_NAME)){
//             //         HttpCookie cookie = cookieValueMap.getFirst(GlobalConstant.ADMIN_LOGIN_TOKEN_COOKIE_NAME);
//             //         token = cookie.getValue();
//             //         isCookieToken = true;
//             //     }
//             // }
//             // if(StringUtils.isEmpty(token)){
//             //     return FilterUtil.failResponse(exchange, Code.UNAUTHORIZED,"非法访问");
//             // }
//             // if(!redisUtil.hasKey(RedisKeyConstant.adminApiAuthLoginToken+token)){
//             //     return FilterUtil.failResponse(exchange,Code.EXPIRE_LOGIN,"登录过期");
//             }
//             if(isCookieToken){
//                 ServerHttpRequest host = exchange.getRequest().mutate().header("token", token).build();
//                 ServerWebExchange build = exchange.mutate().request(host).build();
//                 return chain.filter(build);
//             }
//             return chain.filter(exchange);
//         };
//     }
//
//     @Override
//     public int getOrder() {
//         return 1;
//     }
// }